Chcę usunąć oddział zarówno lokalnie, jak i zdalnie. Nieudane próby usunięcia zdalnego oddziału $ git branch -d remotes / origin / bugfix błąd: nie znaleziono gałęzi 'remotes / origin / bugfix'. $ git branch -d origin / bugfix błąd: nie znaleziono gałęzi „origin / bugfix”. $ git branch -rd origin / bugfix Usunięto źródło / poprawkę błędu zdalnego oddziału (poprzednio 2a14ef7). $ git push Wszystko aktualne $ git pull Z github.com:gituser/gitproject * [nowa gałąź] bugfix -> origin / bugfix Już na bieżąco. Co powinienem zrobić inaczej, aby pomyślnie usunąć gałąź zdalne / origin / bugfix zarówno lokalnie, jak i zdalnie?
2020-12-07 13:13:05
1 2 Kolejny Streszczenie dla kierownictwa $ git push -d$ git branch -d Zauważ, że w większości przypadków zdalna nazwa to źródło. W takim przypadku będziesz musiał użyć polecenia w ten sposób. $ git push -d origin Usuń oddział lokalny Aby usunąć oddział lokalny, użyj jednej z następujących czynności: $ git branch -d nazwa_gałęzi $ git branch -D nazwa_gałęzi Uwaga: Opcja -d jest aliasem dla --delete, które usuwa gałąź tylko wtedy, gdy została już w pełni scalona w gałęzi nadrzędnej. Możesz także użyć -D, które jest aliasem dla --delete --force, które usuwa gałąź „niezależnie od jej statusu scalenia”. [Źródło: man git-branch] Zauważ również, że polecenie git branch -d nazwa_gałęzi zakończy się niepowodzeniem, jeśli aktualnie jesteś w gałęzi, którą chcesz usunąć. Wiadomość zaczyna się od błąd: nie można usunąć gałęzi „nazwa_gałęzi”. Jeśli tak, najpierw przełącz do innej gałęzi, na przykład: git checkout master. Usuń oddział zdalny [zaktualizowano w dniu 8 września 2017 r.] Począwszy od Git v1.7.0, możesz usunąć zdalną gałąź za pomocą $ git push --delete co może być łatwiejsze do zapamiętania niż $ git push : który został dodany w Git v1.5.0 „w celu usunięcia zdalnej gałęzi lub tagu”. Począwszy od Git v2.8.0, możesz także użyć git push z opcją -d jako aliasu dla --delete. Dlatego wersja Gita, którą zainstalowałeś, będzie decydować o tym, czy musisz użyć łatwiejszej, czy trudniejszej składni. Usuń oddział zdalny [Oryginalna odpowiedź z 5 stycznia 2010 r.] Z rozdziału 3 Pro Git autorstwa Scotta Chacona: Usuwanie oddziałów zdalnych Załóżmy, że skończyłeś ze zdalną gałęzią - powiedzmy, że ty i twoi współpracownicy ukończyliście pracę z funkcją i scaliliście ją z odgałęzieniem głównym zdalnego (lub inną gałęzią, w której znajduje się stabilna linia kodu). Możesz usunąć zdalną gałąź, używając raczej zawiłej składni git push [nazwa zdalnego repozytorium]: [gałąź]. Jeśli chcesz usunąć gałąź naprawy serwera z serwera, wykonaj następujące czynności: Źródło wypychania $ git: serverfix Do git@github.com: schacon / simplegit.git - [usunięto] serverfix Bum. Nigdy więcej oddziałów na Twoim serwerze. Możesz przejrzeć tę stronę, ponieważ będziesz potrzebować tego polecenia i prawdopodobnie zapomnisz składni. Sposobem na zapamiętanie tej komendy jest przywołanie składni git push [nazwa zdalnego serwera] [localbranch]: [remotebranch], którą omówiliśmy nieco wcześniej. Jeśli pominiesz część [localbranch], w zasadzie mówisz: „Nie bierz niczego po mojej stronie i uczyń z tego [odległego odgałęzienia]”. Wydałem źródło git push: bugfix i działało pięknie. Scott Chacon miał rację - będę chciał przejrzeć tę stronę (lub praktycznie psie ucho, odpowiadając na to w Stack Overflow). Następnie powinieneś wykonać to na innych komputerach # Pobierz zmiany ze wszystkich pilotów i usuń lokalnie # zdalnie usunięte gałęzie / tagi itp # --prune wykona zadanie: -; git fetch --all --prune propagować zmiany. | Odpowiedź Matthew świetnie nadaje się do usuwania odległych gałęzi i doceniam również wyjaśnienie, ale aby dokonać prostego rozróżnienia między tymi dwoma poleceniami: Aby usunąć lokalny oddział z komputera: git branch -d {the_local_branch} (zamiast tego użyj -D, aby wymusić usunięcie gałęzi bez sprawdzania statusu scalenia) Aby usunąć zdalną gałąź z serwera: git push origin --delete {the_remote_branch} Odniesienie: Git: Usuń gałąź (lokalną lub zdalną) | Krótkie odpowiedzi Jeśli chcesz uzyskać bardziej szczegółowe wyjaśnienia dotyczące poniższych poleceń, zapoznaj się z długimi odpowiedziami w następnej sekcji. Usuwanie zdalnego oddziału git push origin --delete # Git w wersji 1.7.0 lub nowszej git push origin -d # Krótsza wersja (Git 1.7.0 lub nowsza) git push origin: # Wersje Git starsze niż 1.7.0 Usuwanie lokalnego oddziału git branch --delete git branch -d # Krótsza wersja git branch -D # Wymuś usunięcie niepołączonych gałęzi Usuwanie lokalnego oddziału zdalnego śledzenia git branch --delete --remotes / git branch -dr / # Shorter git fetch --prune # Usuń wiele przestarzałych gałęzi zdalnego śledzenia git fetch -p # Krótszy Długa odpowiedź: istnieją trzy różne gałęzie do usunięcia! Kiedy masz do czynienia z usuwaniem oddziałów zarówno lokalnie, jak i zdalnie, pamiętaj, że w grę wchodzą trzy różne gałęzie: Oddział lokalny X. Zdalna gałąź pochodzenia X. Lokalne źródło / X gałęzi zdalnego śledzenia, które śledzi zdalną gałąź X. Wykorzystano oryginalny plakat: git branch -rd origin / bugfix Który tylko usunął jego lokalną gałąź zdalnego śledzenia pochodzenia / poprawkę błędu, a nie rzeczywistą poprawkę błędu zdalnego oddziału na początku. Aby usunąć ten faktyczny oddział zdalny, potrzebujesz git push origin --delete bugfix Dodatkowe Szczegóły W poniższych sekcjach opisano dodatkowe szczegóły, które należy wziąć pod uwagę podczas usuwania oddziałów zdalnego i zdalnego śledzenia. Pchnięcie w celu usunięcia gałęzi zdalnych usuwa również gałęzie ze zdalnym śledzeniem Zauważ, że usunięcie zdalnej gałęzi X z wiersza poleceńużycie git push usunie również lokalną gałąź zdalnego śledzenia / X, więc nie jest konieczne wycinanie przestarzałej gałęzi zdalnego śledzenia za pomocą git fetch --prune lub git fetch -p. Jednak nie zaszkodzi, jeśli i tak to zrobisz. Możesz sprawdzić, czy gałąź pochodzenia / X zdalnego śledzenia również została usunięta, uruchamiając następujące polecenie: # Zobacz tylko gałęzie ze zdalnym śledzeniem git branch --remotes git branch -r # Zobacz zarówno ściśle lokalne, jak i zdalne gałęzie śledzenia git branch - all git branch -a Przycinanie przestarzałego lokalnego pochodzenia gałęzi zdalnego śledzenia / X Jeśli nie usunąłeś zdalnej gałęzi X z wiersza poleceń (jak powyżej), to lokalne repozytorium nadal będzie zawierało (teraz przestarzałą) gałąź pochodzenia zdalnego śledzenia / X. Może się tak zdarzyć, jeśli na przykład usunąłeś zdalną gałąź bezpośrednio przez interfejs sieciowy GitHub. Typowym sposobem usunięcia tych przestarzałych gałęzi zdalnego śledzenia (od wersji Git 1.6.6) jest po prostu uruchomienie git fetch z opcją --prune lub krótszą -p. Zauważ, że to usuwa wszystkie przestarzałe lokalne gałęzie zdalnego śledzenia dla wszelkich zdalnych gałęzi, które już nie istnieją na zdalnym: git fetch origin --prune git fetch origin -p # Krótszy Oto odpowiedni cytat z informacji o wersji 1.6.6 (wyróżnienie moje): „git fetch” nauczył się --all i --multipleoptions, z których można uruchomić pobieranie wiele repozytoriów oraz opcja --prune do usuwania zdalnego śledzenia gałęzie, które zestarzały się. Tworzą one „git remote update” i „git zdalne przycinanie „mniej potrzebne (nie ma planu usuwania” zdalne aktualizacja „ani„ zdalna śliwka ”). Alternatywa dla powyższego automatycznego przycinania dla przestarzałych gałęzi zdalnego śledzenia Alternatywnie, zamiast przycinania przestarzałych lokalnych gałęzi zdalnego śledzenia za pomocą git fetch -p, możesz uniknąć wykonywania dodatkowych operacji sieciowych, po prostu ręcznie usuwając gałęzie z flagami --remote lub -r: git branch --delete --remotes origin / X git branch -dr origin / X # Shorter Zobacz też git-branch (1) Strona podręcznika. git-fetch (1) Strona podręcznika. Pro Git § 3.5 Rozgałęzianie Git - Oddziały zdalne. | Kroki do usunięcia oddziału: Aby usunąć zdalną gałąź: git push origin --delete Istnieją trzy sposoby usunięcia lokalnego oddziału: 1: git branch -D 2: git branch --delete --force # To samo co -D 3: git branch --delete # Błąd podczas usuwania połączenia Wyjaśnij: OK, po prostu wyjaśnij, co się tutaj dzieje! Po prostu zrób git push origin --delete, aby usunąć tylko zdalną gałąź, dodaj nazwę gałęzi na końcu, a to usunie ją i wypchnie do zdalnego w tym samym czasie ... Ponadto, git branch -D, które po prostu usuwa tylko lokalną gałąź! ... -D oznacza --delete --force, które usunie gałąź, nawet jeśli nie jest scalona (wymuś usunięcie), ale możesz również użyć -d, co oznacza --delete, które generuje błąd odpowiadający statusowi scalania gałęzi ... Tworzę również poniższy obrazek, aby pokazać kroki: | Możesz również użyć następujących poleceń, aby usunąć zdalną gałąź git push --delete pochodzenia serverfix Który robi to samo co git push origin: serverfix ale może być łatwiejsze do zapamiętania. | Wskazówka: kiedy usuwasz gałęzie za pomocą git branch -d # Usuwa lokalny oddział lub git push origin: # Usuwa zdalną gałąź usuwane są tylko odniesienia. Mimo że gałąź jest faktycznie usuwana z pilota, odniesienia do niej nadal istnieją w lokalnych repozytoriach członków zespołu. Oznacza to, że dla innych członków zespołu usunięte gałęzie są nadal widoczne, gdy wykonują git branch -a. Aby rozwiązać ten problem, członkowie Twojego zespołu mogą przycinać usunięte gałęzie za pomocą git remote prune Zwykle jest to źródło pochodzenia śliwek zdalnych. | Jeśli chcesz usunąć oddział, najpierw przejdź do oddziału innego niż oddział, który ma zostać usunięty. git checkout other_than_branch_to_be_deleted Usuwanie lokalnego oddziału: git branch -D branch_to_be_deleted Usuwanie zdalnego oddziału: git push origin --delete branch_to_be_deleted | git branch -D git branch -D -r origin / git push origin: | To proste: po prostu uruchom następujące polecenie: Aby usunąć gałąź Git zarówno lokalnie, jak i zdalnie, najpierw usuń gałąź lokalną za pomocą tego polecenia: przykład git branch -d (Tutaj przykładem jest nazwa oddziału). A następnie usuń zdalną gałąź za pomocą tego polecenia: git push origin: przykład | To jest bardzo proste: Aby usunąć zdalną gałąź git push -d origin Lub git push origin: Aby wymusić usunięcie lokalnego oddziału git branch -D | Inne podejście to: git push --prune pochodzenie OSTRZEŻENIE: Spowoduje to usunięcie wszystkich zdalnych gałęzi, które nie istnieją lokalnie. Lub bardziej kompleksowo, git push --mirror skutecznie sprawi, że zdalne repozytorium będzie wyglądało jak lokalna kopia repozytorium (lokalne głowice, piloty i tagi są dublowane na zdalnym). | Używam następujących ustawień w moich ustawieniach Bash: alias git-shoot = "git pushpochodzenie - usuń " Następnie możesz zadzwonić: git-shoot nazwa gałęzi | Usuń lokalnie: Aby usunąć oddział lokalny, możesz użyć: git branch -d Aby wymusić usunięcie gałęzi, użyj -D zamiast -d. git branch -D Usuń zdalnie: Istnieją dwie możliwości: git push origin: nazwa gałęzi git push origin --delete nazwa gałęzi Sugerowałbym skorzystanie z drugiego sposobu, ponieważ jest bardziej intuicyjny. | Od stycznia 2013 r. GitHub zawiera przycisk Usuń gałąź obok każdej gałęzi na stronie „Oddziały”. Odpowiedni wpis na blogu: Twórz i usuwaj gałęzie | Jeśli chcesz wykonać oba te kroki za pomocą jednego polecenia, możesz utworzyć dla niego alias, dodając poniższy plik do pliku ~ / .gitconfig: [Alias] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Alternatywnie możesz dodać to do swojej konfiguracji globalnej z wiersza poleceń za pomocą git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; };fa' UWAGA: Jeśli używasz -d (małe litery d), gałąź zostanie usunięta tylko wtedy, gdy została scalona. Aby wymusić usunięcie, będziesz musiał użyć -D (wielka litera D). | Aby usunąć swój oddział lokalnie i zdalnie Checkout to master branch - git checkout master Usuń zdalną gałąź - git push origin --delete Usuń swój lokalny oddział - git branch --delete | Możesz to również zrobić za pomocą git remote prune origin $ git zdalne pochodzenie śliwek Przycinanie pochodzenia URL: git@example.com/yourrepo.git * [przycięte] pochodzenie / niektóre gałęzie Przycina i usuwa gałęzie ze zdalnym śledzeniem z listy git branch -r. | Oprócz innych odpowiedzi często korzystam z narzędzia git_remote_branch. Jest to dodatkowa instalacja, ale zapewnia wygodny sposób interakcji ze zdalnymi oddziałami. W takim przypadku, aby usunąć: grb usuń gałąź Zauważyłem, że dość często korzystam z poleceń publikowania i śledzenia. | Jednowierszowe polecenie do usuwania zarówno lokalnego, jak i zdalnego: D = nazwa gałęzi; git branch -D $ D; git push origin: $ D Lub dodaj poniższy alias do swojego ~ / .gitconfig. Użycie: git kill nazwa-gałęzi [Alias] kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f" | Usuwanie oddziałów Załóżmy, że nasza praca na gałęzi "formularz kontaktowy" jest zakończona i już zintegrowaliśmy go z "master". Ponieważ już go nie potrzebujemy, możemy go usunąć (lokalnie): $ git branch -d contact-form Aby usunąć zdalną gałąź: git push origin --delete contact-form | Usuń oddział zdalny git push origin: Usuń oddział lokalny git branch -D Usuń kroki lokalnego oddziału: kasy do innego oddziału usuń oddział lokalny | Po prostu powiedz: git branch -d git push origin: | git push origin --delete jest łatwiejszy do zapamiętania niż git push origin: branchName | Teraz możesz to zrobić za pomocą aplikacji GitHub Desktop. Po uruchomieniu aplikacji Kliknij projekt zawierający gałąź Przejdź do oddziału, który chcesz usunąć Z menu „Oddział” wybierz „Cofnij publikację ...”, aby usunąć gałąź z serwerów GitHub. Z menu „Oddział” wybierz „Usuń” nazwa_gałęzi ”...”, aby usunąć gałąź z komputera lokalnego (czyli komputera, na którym aktualnie pracujesz) | Aby usunąć lokalnie - (normalne) git branch -d my_branch Jeśli twoja gałąź jest w trakcie ponownego bazowania / scalania i nie zostało to zrobione poprawnie, oznacza to, że pojawi się błąd, trwa rebase / scalanie, więc w takim przypadku nie będziesz mógł usunąć swojej gałęzi. Więc albo musisz rozwiązać zmianę bazy / scalanie. W przeciwnym razie możesz wymusić usunięcie za pomocą, git branch -D my_branch Aby usunąć zdalnie: git push --delete origin my_branch Możesz zrobić to samo, używając: git push origin: my_branch # Łatwe do zapamiętania oba zrobią to samo. Reprezentacja graficzna: | To nie zadziała, jeśli masz tag o tej samej nazwie co gałąź na pilocie: $ git push origin: nazwa-gałęzi lub tagu błąd: dst refspec nazwa-rozgałęzienia lub znacznika pasuje do więcej niż jednego. błąd: nie udało się przesłać niektórych odnośników do „git@github.com: SomeName / some-repo.git” W takim przypadku musisz określić, że chcesz usunąć gałąź, a nie tag: git push origin: refs / heads / branch-or-tag-name Podobnie, aby usunąć tag zamiast gałęzi, którego użyłbyś: git push origin: refs / tags / branch-or-tag-name | Wiele innych odpowiedzi prowadzi do błędów / ostrzeżeń. To podejście jest stosunkowo głupie, chociaż nadal możesz potrzebować git branch -D branch_to_delete, jeśli nie jest na przykład w pełni scalony z jakimś_ innym_branchem. git checkout some_other_branch git push origin: branch_to_delete git branch -d branch_to_delete Zdalne czyszczenie nie jest potrzebne, jeśli usunąłeś zdalną gałąź. Służy tylko do uzyskiwania najbardziej aktualnych pilotów dostępnych w śledzonym repozytorium. Zauważyłem, że git fetch doda piloty, a nie je usunie. Oto przykład, kiedy git remote prune origin faktycznie coś zrobi: Użytkownik Awykonuje powyższe kroki. Użytkownik B uruchomiłby następujące polecenia, aby zobaczyć najbardziej aktualne gałęzie zdalne: git fetch git remote prune pochodzenie git branch -r | Mam dość szukania w Google tej odpowiedzi, więc przyjąłem podobne podejście do odpowiedzi, którą crizCraig opublikował wcześniej. Dodałem do mojego profilu Bash: function gitdelete () { git push origin --delete $ 1 git branch -D $ 1 } Następnie za każdym razem, gdy skończę z gałęzią (na przykład scaloną w master), uruchamiam następujące polecenie w moim terminalu: gitdelete nazwa-oddziału ... który następnie usuwa nazwę my-branch z pochodzenia, jak również lokalnie. | Przed wykonaniem git branch --delete upewnij się, że najpierw określisz dokładną nazwę zdalnego oddziału, wykonując: git ls-remote Dzięki temu dowiesz się, co dokładnie wpisać dla wartości . (w gałęzi jest rozróżniana wielkość liter!) | Posługiwać się: git push origin: bugfix # Usuwa zdalną gałąź git branch -d bugfix # Należy ręcznie usunąć oddział lokalny Jeśli jesteś pewien, że chcesz go usunąć, uruchom git branch -D bugfix Teraz, aby wyczyścić usunięte zdalne gałęzie, uruchom git remote prune pochodzenie | 1 2 Kolejny Bardzo aktywne pytanie. Zdobądź 10 punktów reputacji, aby odpowiedzieć na to pytanie. Wymóg dotyczący reputacji pomaga chronić to pytanie przed spamem i brakiem odpowiedzi. Nie szukasz odpowiedzi? Przeglądaj inne pytania oznaczone tagiem git kontrola wersji git-branch git-push git-remote lub zadaj własne pytanie.